跳到主要内容

Linux 命令行操作

一台完整的计算机是由运算器、控制器、存储器、输入/输出等多种硬件设备共同组成的,而能让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务,对系统的正常运行起着十分重要的作用。 Shell 就是终端程序的统称,它充当了人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端程序,它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是 Bash(Bourne-Again SHell)解释器,这个 Bash 解释器主要有以下4项优势:

  • 通过上下方向键来调取执行过的 Linux 命令;
  • 命令或参数仅需输入前几位就可以用 Tab 键补全;
  • 具有强大的批处理脚本;
  • 具有实用的环境变量功能。

执行命令

命令名称    [命令参数]    [命令对象]

可选择的、可加或可不加的、非必需的参数使用中括号引起来,而命令所要求的、必须有的参数或对象值,则不带中括号。

  • 命令名称:就是语法中的“动词”,表达的是想要做的事情,例如创建用户、查看文件、重启系统等操作。

  • 命令参数:用于对命令进行调整,让“修改”过的命令能更好地贴合工作需求,达到事半功倍的效果。

Linux命令参数的长格式与短格式示例

长格式man --help
短格式man -h
  • 命令对象:一般指要处理的文件、目录、用户等资源名称,也就是命令执行后的“承受方”。例如创建一位叫小明的用户、查看一个叫工资表的文件、重启一个IP为192.168.10.10的系统等。

Linux系统中的命令、参数、对象都是严格区分大小写

帮助文档

man

使用 man 命令查看到的帮助内容信息

按键作用
空格键向下翻一页
PaGe down向下翻一页
PaGe up向上翻一页
home直接前往首页
end直接前往尾页
/从上至下搜索某个关键词,如“/linux”
?从下至上搜索某个关键词,如“?linux”
n定位到下一个搜索到的关键词
N定位到上一个搜索到的关键词
q退出帮助文档

示例

# 查看 man 的帮助文件
man man

# 查看 ssh 的帮助文件
man sh

快捷键

Tab

实现对命令、参数或文件的内容补全。

按键作用
Tab键自动补全
Tab键 + Tab键匹配所有符合的命令

Ctrl+c

终止当前进程的运行,控制权会立刻回到命令行终端。

Ctrl+d

键盘输入结束。

Ctrl+l

清空当前终端中已有的内容(清屏操作)。

Ctrl+R

搜索之前使用过的命令。

Ctrl+Z

挂起当前进程。

常用命令

文件操作

命令全拼说明
lslist列出目录中的文件列表
cdchange directory更改当前工作目录
pwdprint working directory显示当前工作目录
mkdirmake directory创建新目录
rmdirremove directory删除空目录
touchtouch创建新文件
cpcopy复制文件或目录
mvmove移动文件或目录
rmremove删除文件或目录

文件处理

命令全拼说明
catconcatenate查看、合并文件内容
headhead查看文件头部内容
tailtail查看文件尾部内容
grepglobal regular expression print在文件中查找指定文本
sedstream editor流编辑器,用于对文件进行基本文本处理
awkawk文本和数据处理工具

系统管理

命令全拼说明
psprocess status查看进程状态
toptop实时查看系统进程状态
killkill终止进程
shutdownshutdown关闭系统
rebootreboot重启系统
unameuname显示系统信息
dfdisk free显示磁盘使用情况
dudisk usage显示目录空间使用情况
freefree显示系统内存使用情况

网络管理

命令命令全拼描述
ipinternet protocol显示和配置网络接口信息
pingping测试主机之间的连通性
nslookupname server lookup查询域名解析信息
traceroutetrace route显示数据包到达目的地经过的路由信息
routeroute显示和配置系统的路由表
netstatnetwork statistics显示网络连接状态和统计信息
tcpdumpTCP dump抓取网络数据包并进行分析

权限管理

命令命令全拼描述
chmodchange mode修改文件或目录的访问权限
chownchange owner修改文件或目录的所有者
chgrpchange group修改文件或目录的所属组
useradduser add添加用户账号
usermoduser modify修改用户账号信息
userdeluser delete删除用户账号
groupaddgroup add添加用户组
groupmodgroup modify修改用户组信息
groupdelgroup delete删除用户组
passwdpassword修改用户密码
suswitch user切换用户身份
sudosuperuser do以超级用户身份执行命令
visudovisual sudo编辑 sudo 配置文件
ididentity显示当前用户信息
whoamiwho am i显示当前登录用户名

软件管理

命令全拼说明
apt-getAdvanced Packaging ToolUbuntu系统软件包管理工具
yumYellowdog Updater ModifiedCentOS、Fedora等系统软件包管理工具
dpkgDebian PackageDebian、Ubuntu等系统软件包管理工具
rpmRed Hat Package ManagerCentOS、Fedora等系统软件包管理工具

磁盘管理

命令全拼描述
dfdisk filesystem显示磁盘空间使用情况
dudisk usage显示文件和目录的磁盘使用情况
fdiskfixed disk磁盘分区管理工具
fsckfile system check检查和修复文件系统
mkfsmake filesystem创建文件系统
mountmount挂载文件系统到目录上
umountunmount卸载文件系统

进程管理

命令命令全拼描述
psprocess status显示当前进程状态
toptask-oriented processor动态显示进程信息
killkill终止一个进程
killallkillall终止一个指定名称的进程
nicenice改变进程优先级
renicerenice改变正在运行进程的优先级
jobsjobs显示当前shell的活动作业
bgbackground将一个进程置于后台
fgforeground将一个进程置于前台
nohupno hang up在后台运行命令,并不挂起
pstreeprocess tree显示进程树

重定向

输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。

  • 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。

  • 标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。

  • 错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。

对于重定向中的标准输出模式,可以省略文件描述符 1 不写,而错误输出模式的文件描述符 2 是必须要写的。

输入重定向

符号及其作用

符号作用
命令 < 文件将文件作为命令的标准输入
命令 << 分界符从标准输入中读入,直到遇见分界符才停止
命令 < 文件1 > 文件2将文件1作为命令的标准输入并将标准输出到文件2

输出重定向

符号作用
命令 > 文件将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1 或 命令 &>> 文件将标准输出与错误输出共同写入到文件中(追加到原有内容的后面

管道

管道命令符把前一个命令原本要输出到屏幕的信息当作后一个命令的标准输入,其执行格式为“命令A | 命令B”。按下键盘上的Shift+反斜杠(\)键即可输入管道符,

# 输出禁止登录用户行数
grep /sbin/nologin /etc/passwd | wc -l

# 搜索与 bash 有关的进程
ps aux | grep bash

命令符可以无限组合,例如:命令A | 命令B | 命令C |……

曾经有位东北的同学做了一个特别贴切的类比:把管道符当做流水线作业,这跟吃顿烧烤是同一个道理,即第一个人负责切肉,第二个人负责串肉,第三个人负责烧烤,最后的处理结果交付给用户。

通配符

通配符含义
*任意字符
?单个任意字符
[a-z]单个小写字母
[A-Z]单个大写字母
[a-Z]单个字母
[0-9]单个数字
[[:alpha:]]任意字母
[[:upper:]]任意大写字母
[[:lower:]]任意小写字母
[[:digit:]]所有数字
[[:alnum:]]任意字母加数字
[[:punct:]]标点符号

示例:

# 匹配 /dev 目录中且以 sda 开头的文件
ls -l /dev/sda*

转义字符

  • 反斜杠(\):使反斜杠后面的一个变量变为单纯的字符。

  • 单引号(' '):转义其中所有的变量为单纯的字符串。

  • 双引号(" "):保留其中的变量属性,不进行转义处理。

  • 反引号(` `):把其中的命令执行后返回结果。

环境变量

在Linux系统中,变量名称一般都是大写的,命令则都是小写的,这是一种约定俗成的规范。

Linux系统中最重要的 10 个环境变量

变量名称作用
HOME用户的主目录(即家目录)
SHELL用户在使用的Shell解释器名称
HISTSIZE输出的历史命令记录条数
HISTFILESIZE保存的历史命令记录条数
MAIL邮件保存路径
LANG系统语言、语系名称
RANDOM生成一个随机数字
PS1Bash解释器的提示符
PATH定义解释器搜索用户执行命令的路径
EDITOR用户默认的文本编辑器